package cn.itcast.bigdata.socket.zuoye;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


//一、通过反射获取类的三种方式
//1、通过 Class.forName("类的全称")
//例如：Class cl1=  Class.forName("com.csdn.Test");

//2、通过 类名.class
//例如： Test test=new Test();
//Class cl3= Test.class;

//3、通过  类的对象.getClass()
//
//例如： Class cl2=test.getClass();
//
// 二、获取类之后常用的方法
//  getName() 获取类的全称（包括包名）
//getSimpleName() 获取类的简称（不含类的路径）
//getDeclaredConstructor() 返回指定参数，所有声明的（包含private）的构造函数
//getContructor() 返回指定参数类型，具有public访问权限的构造函数
//getDeclaredFields() 返回该类中的属性 Field[] fields
//循环遍历后可以获取每一个Field getName()获取该类中的属性名


public class MyGetDataServiceImpl {




	public Object getData(String classNamme,String methodName) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
		//反射进行函数调用，调用指定类名的函数和方法
		Class<DongService> c1= (Class<DongService>) Class.forName(classNamme);
		Object dong=c1.getConstructor().newInstance();
		Method method=c1.getMethod(methodName,String.class);

		return method.invoke(dong,"123");
	}
	

}
